package com.servu.allVersion;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;

public class ServuAllVersion {
    public static void main(String[] args) throws IOException {

        List<String> list = new ArrayList<String>(7);
        // 爬取原网页中的serv-u的版本信息
        getServuAllVersionName(list, "http://www.hiserv.cn/download/713980/");
        // 将serv-u的所有版本信息写入txt文件
        fillContentToText(list);
    }

    /**
     * 将serv-u的所有版本信息写入txt文件
     * @param servAllVersion serv-u的所有版本信息集合
     */
    public static void fillContentToText(List<String> servAllVersion) {
        if (null == servAllVersion || servAllVersion.size() == 0) {
            return;
        }
        BufferedWriter bufferedWriter = null;
        try {
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("all version of Serv-U.txt"), "UTF-8"));
            for (String versionName : servAllVersion) {
                bufferedWriter.write(versionName);
                bufferedWriter.newLine();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (bufferedWriter != null) {
                    bufferedWriter.close();
                    bufferedWriter.close();
                }
            } catch (Exception e) {

            }
        }
    }

    /**
     * 爬取原网页中的serv-u的版本信息
     * @param list 存放所有版本的名称的集合
     * @param url  要爬取数据的原网址
     * @throws IOException
     */
    public static void getServuAllVersionName(List<String> list, String url) throws IOException {

        // 获取页面文档数据
        Document doc = Jsoup.connect(url).get();

        // 获取页面上所有的tbody标签
        Elements elements = doc.getElementsByTag("tbody");

        // 本页面只有一个tbody标签
        Element element = elements.get(0);

        // 拿到tbody标签下所有的子标签
        Elements children = element.children();

        for (Element element1 : children) {
            Elements tds = element1.getElementsByClass("fw_t");
            for (Element td : tds) {
                // 得到版本名称
                String servuVersionName = td.getElementsByTag("a").text();
                // 将大写字母转换为小写
                list.add(servuVersionName.toLowerCase());
            }
        }
    }
}
